# coding=utf-8
from PIL import Image
# im = Image.open('1.jpeg')
# print(im.size,im.mode,im.format,im.info)

'''
Image 类的实例有 5 个属性，分别是：

format: 以 string 返回图片档案的格式（JPG, PNG, BMP, None, etc.）；如果不是从打开文件得到的实例，则返回 None。
mode: 以 string 返回图片的模式（RGB, CMYK, etc.）；完整的列表参见 官方说明·图片模式列表
size: 以二元 tuple 返回图片档案的尺寸 (width, height)
palette: 仅当 mode 为 P 时有效，返回 ImagePalette 示例
info: 以字典形式返回示例的信息
'''
from PIL import Image
from pytesseract import *
import PIL.ImageOps
import requests
import re
def a():
    print('aaa')
def initTable(threshold=140):
    table = []
    for i in range(256):
        if i < threshold:
            table.append(0)
        else:
            table.append(1)
    return table
def CAP(url):
    jp = requests.get(url=url)
    #jp =requests.get(url="http://192.168.5.140:81/yzm/code.php")
    #jp = requests.get(url="http://ha.liaoliao.com/validateCode.aspx")
    with open('/tmp/2.png', 'wb') as file:
        file.write(jp.content)
    im = Image.open('/tmp/2.png')
    #图片的处理过程
    im = im.convert('L')#对于灰度图像，不管其图像格式是PNG，还是BMP，或者JPG，打开后，其模式为“L”。
    binaryImage = im.point(initTable(), '1')
    im1 = binaryImage.convert('L')
    im2 = PIL.ImageOps.invert(im1)
    im3 = im2.convert('1')
    im4 = im3.convert('L')
    #将图片中字符裁剪保留
    #box = (25,13,100,26) #左 顶部   ？？ 底部  local
    box = (5,0,90,23)
    region = im4.crop(box)
    #将图片字符放大
    out = region.resize((200,70))
    asd = pytesseract.image_to_string(out)
    return asd

    #print(out.show())
#CAP(url="http://127.0.0.1:81/code.php")